创建 HTTP 服务器

概述

在本教程中,我们将学习如何使用 Node.js 创建一个简单的 HTTP 服务器。HTTP 服务器是 Web 应用程序的基础,它负责接收客户端的请求并返回相应的响应。我们将从基础开始,逐步深入,确保你能够理解并实现一个功能完整的 HTTP 服务器。

1. 环境设置

在开始之前,确保你已经安装了 Node.js。如果你还没有安装,可以从 Node.js 官网 下载并安装。安装完成后,打开终端或命令提示符,输入以下命令来验证安装是否成功:

node -v

如果安装成功,你应该会看到 Node.js 的版本号。

2. 创建项目目录

首先,创建一个新的项目目录,并在该目录中初始化一个新的 Node.js 项目。

mkdir my-http-server
cd my-http-server
npm init -y

npm init -y 命令会自动生成一个 package.json 文件,其中包含项目的默认配置。

3. 编写 HTTP 服务器代码

在项目目录中创建一个名为 server.js 的文件,并在其中编写以下代码:

// 引入 Node.js 内置的 http 模块
const http = require('http');

// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {
    // 设置响应头
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    
    // 发送响应数据
    res.end('Hello, World!\n');
});

// 监听端口 3000
const PORT = 3000;
server.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

代码解释

  1. 引入 http 模块:

    const http = require('http');
    

    这行代码引入了 Node.js 内置的 http 模块,该模块提供了创建 HTTP 服务器所需的功能。

  2. 创建 HTTP 服务器:

    const server = http.createServer((req, res) => {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end('Hello, World!\n');
    });
    

    使用 http.createServer 方法创建一个 HTTP 服务器。该方法接受一个回调函数,当有请求到达时,该回调函数会被调用。回调函数有两个参数:req(请求对象)和 res(响应对象)。

    • res.writeHead(200, { 'Content-Type': 'text/plain' });:设置响应头,状态码为 200,内容类型为纯文本。
    • res.end('Hello, World!\n');:发送响应数据并结束响应。
  3. 监听端口:

    const PORT = 3000;
    server.listen(PORT, () => {
        console.log(`Server is running on http://localhost:${PORT}`);
    });
    

    使用 server.listen 方法让服务器监听指定的端口(这里是 3000)。当服务器成功启动后,控制台会输出一条消息,指示服务器正在运行。

4. 运行服务器

在终端中运行以下命令来启动服务器:

node server.js

如果一切顺利,你应该会看到类似以下的输出:

Server is running on http://localhost:3000

现在,打开浏览器并访问 http://localhost:3000,你应该会看到页面上显示 "Hello, World!"。

5. 实践练习

练习 1:修改响应内容

修改 server.js 文件中的响应内容,使其返回 "Welcome to my HTTP server!"。

练习 2:处理不同的请求路径

修改服务器代码,使其能够根据请求路径返回不同的内容。例如:

  • 当访问 / 时,返回 "Home Page"。
  • 当访问 /about 时,返回 "About Page"。

提示:你可以使用 req.url 来获取请求的路径。

练习 3:处理 POST 请求

修改服务器代码,使其能够处理 POST 请求,并将请求体中的数据返回给客户端。

提示:你可以使用 req.method 来判断请求的类型,并使用 req.on('data', callback) 和 req.on('end', callback) 来处理请求体数据。

6. 总结

通过本教程,你已经学会了如何使用 Node.js 创建一个简单的 HTTP 服务器。你了解了如何处理请求和响应,并进行了一些基础的实践练习。接下来,你可以继续深入学习如何处理更复杂的请求、使用路由、处理静态文件等高级主题。

希望你能继续探索 Node.js 和 Web 开发的世界,不断提升自己的编程技能!